GitHub Actions
tutorial
workflow
jobの集合
1個1個のまとまったワークフローという感じ
job
stepの集合
step
actionの集合(?)
もしくはshellのコマンド
ymlでstep書くときのハイフンの有無はなに?
action
最小単位
命令
ちょっとしたものならshellで書く
Dockerと併用すれば任意の言語でactionを作ることができる event
workflowをtriggerするもの
e.g. push, PR
変数
vars.HOGE
secrets.HOGE
ビルトインコンテキスト
4. GitHub context (github.*)
code:yaml
${{ github.repository }} # リポジトリ名
${{ github.ref }} # ブランチ/タグ名
${{ github.sha }} # コミットSHA
${{ github.actor }} # アクションを実行したユーザー
${{ github.event_name }} # イベント名
${{ github.workspace }} # ワークスペースディレクトリ
5. Runner context (runner.*)
code:yaml
${{ runner.os }} # OS (Linux, Windows, macOS)
${{ runner.arch }} # アーキテクチャ
${{ runner.temp }} # 一時ディレクトリ
6. Job context (job.*)
code:yaml
${{ job.status }} # ジョブステータス
${{ job.container }} # コンテナ情報
7. Steps context (steps.*)
code:yaml
${{ steps.step-id.outputs.output-name }} # ステップのアウトプット
${{ steps.step-id.conclusion }} # ステップの結果
8. Needs context (needs.*)
code:yaml
${{ needs.job-id.outputs.output-name }} # 依存ジョブのアウトプット
${{ needs.job-id.result }} # 依存ジョブの結果
9. Inputs context (inputs.*)
code:yaml
${{ inputs.input-name }} # ワークフローやアクションの入力値
10. Strategy context (strategy.*)
code:yaml
${{ strategy.fail-fast }} # マトリックス戦略の設定
${{ matrix.version }} # マトリックスの値
環境変数
code:yaml
env:
CUSTOM_VAR: "value"
# ${{ env.CUSTOM_VAR }} で参照
他のActionから再利用できるActionを作る
例えば、何らかのリポジトリで以下のようなことを書いているとき、
code:yml
steps:
- uses: anthropics/claude-code-action@beta
実行のタイミング
別のサービス(e.g. AWS)でホストしているやつへのdeploy後に回す、とかもできるの #?? AWSのhookとかがあればできるかも
usecase
一定期間放置されたIssueをCloseする
GitHub Projectsのカラム移動でラベルを付与・削除する
こんなことできるんやmrsekut.icon
決まった時間にテンプレートを利用してIssueを作成する
単体テスト
E2Eテスト
TypeScriptの型エラーをPR上に表示する ref GitHubのPR上に表示されるcheckboxにcheckを付けるとdeployする
価格
基本的に無料
planごとにper monthで実行できる時間が変わる
e.g. proなら2000min per month
これを超えた場合は実行できなくなるだけ
勝手に追加課金されたりはしない
macOSを選択するとLinuxの10倍かかる
AWSでhost runner作る
github上ではなく、AWS上で実行するので金がかからない
Action例
なんでcheckoutする必要があるの?
v2が出てる
sleep
memo
default branchに入っていなくても、on:pushになっていれば.github/workflows/hoge.ymlを入れたcommitをpushすれば動く
安く使う